package DataStr.ex01;
public class ex04  {
static class Node{
    int a;//存放结点值
    Node next;//后续结点的引用
    Node(int a){
        this.next=null;//初始化next
        this.a=a;
    }
}
public static class LinkList{
    private Node head;//链表的头结点
    public LinkList(){
        this.head=null;//初始化空链表
    }
 public void add(int a){
        Node newNode=new Node(a);
        if(head ==null){
            head=newNode;//如果链表为空，新节点就是头结点
        }else{
            Node current=head;//从头结点开始
            while(current.next!=null){//找到链表的最后一个节点
                current=current.next;
            }
            current.next=newNode;//将新节点添加到链表末尾
        }
 }
 public void remove(int x){
        while(head!=null&&head.a==x){
            head=head.next;//移动头指针，跳过要删除的节点
     }
        Node current=head;//从头结点开始
     while(current!=null&&current.next!=null){
         if(current.next.a==x){
             current.next=current.next.next;//跳过要删除的节点
         }else{
             current=current.next;//移动到下一个节点
         }
     }
 }
 //打印结果
    public void print(){
        Node current=head;
        while(current!=null){
            System.out.print(current.a+" ");
            current=current.next;
        }
        System.out.println();
    }
}
    public static void main(String[] args) {
        LinkList lk=new LinkList();//创建一个链表实例

        //添加节点
        lk.add(1);
        lk.add(2);
        lk.add(2);
        lk.add(3);
        lk.add(1);
        System.out.println("原来的链表为：");
        lk.print();
        lk.remove(2);
        System.out.println("x=2,删除后的饿链表为：");
        lk.print();

    }
}
